#ifndef _SYS_SERIALIZABLE_H_
#define _SYS_SERIALIZABLE_H_

#include "FanObj.h"
#include "SysTypes.h"

#define SERIALIZABLE_VTABLE(self)   ((SerializableVTable*)((FanObj*)self)->vtable)


extern Type*    Serializable_classType;
extern VTable*  Serializable_classVTable;


/* [sys::Serializable] Attributes */
struct Serializable
{
  FanObj        super;
};


/* [sys::Serializable] Virtual-table */
typedef struct SerializableVTable
{
  FanObjVTable  super;
} SerializableVTable;


/* [sys::Serializable] Methods and fields */
void            Serializable_make_0(Serializable* self);
void            Serializable_make(Serializable* self, Func* f);
Bool            Serializable_simple(Serializable* self);
Bool            Serializable_collection(Serializable* self);


/* [sys::Serializable] Type-system functions */
Type*           Serializable_initType(void);
VTable*         Serializable_initVTable(void);
void            Serializable_initStatic(void);


#endif
